/**
 * 表格列配置项类型
 */
export interface TableColumnConfig {
  prop: string;        // 列属性名
  label: string;       // 列标题
  visible: boolean;    // 是否显示
  fixed?: boolean;     // 是否固定
  order: number;       // 排序序号
  width?: number;      // 列宽度
  required?: boolean;  // 是否为必填列（不可隐藏）
  sortOrders?:String;
  sortable :String
}

/**
 * 保存表格列配置到本地存储
 * @param tableId 表格唯一标识
 * @param columns 列配置数组
 */
export const saveTableColumnsConfig = (tableId: string, columns: TableColumnConfig[]): void => {
  try {
    const config = {
      columns,
      timestamp: new Date().getTime()
    };
    localStorage.setItem(`table_columns_${tableId}`, JSON.stringify(config));
  } catch (error) {
    console.error('保存表格列配置失败:', error);
  }
};

/**
 * 从本地存储获取表格列配置
 * @param tableId 表格唯一标识
 * @param defaultColumns 默认列配置（如果没有保存的配置则返回此值）
 * @returns 表格列配置数组
 */
export const getTableColumnsConfig = (tableId: string, defaultColumns: TableColumnConfig[]): TableColumnConfig[] => {
  try {
    const stored = localStorage.getItem(`table_columns_${tableId}`);
    if (stored) {
      const config = JSON.parse(stored);
      return config.columns || defaultColumns;
    }
  } catch (error) {
    console.error('获取表格列配置失败:', error);
  }
  return defaultColumns;
};

/**
 * 重置表格列配置（删除本地存储中的配置）
 * @param tableId 表格唯一标识
 */
export const resetTableColumnsConfig = (tableId: string): void => {
  try {
    localStorage.removeItem(`table_columns_${tableId}`);
  } catch (error) {
    console.error('重置表格列配置失败:', error);
  }
};

/**
 * 对列配置进行排序
 * @param columns 列配置数组
 * @returns 排序后的列配置数组
 */
export const sortTableColumns = (columns: TableColumnConfig[]): TableColumnConfig[] => {
  return [...columns].sort((a, b) => a.order - b.order);
};